Пауль Хоровиц - Искусство схемотехники. Том 2 [Изд.4-е]
Упражнение 10.10. Чтобы понять смысл последней фразы, напишите представление числа 1.0 в формате IBM. После этого напишите следующее меньшее число в том же формате.
Использование в формате IBM числа 16 в качестве основания увеличивает динамический диапазон, но уменьшает точность. Более того, точность несколько изменяется от числа к числу из-за переменного количества лидирующих двоичных нулей; это явление известно, как «качание» (wobble). В формате IBM отсутствуют «не числа» и бесконечность, и имеется только один нуль (все биты нули); не нормализованные числа не допускаются. Имеется формат IBM и для чисел с двойной точностью (64 бит). Последний формат на рис. 10.24, MIL STD-1750A, используется в военных системах. Он необычен в том отношении, что вместо знака и величины числа в нем записывается мантисса в форме дополнения до двух и порядок тоже в форме дополнения до двух (строго говоря, предыдущие форматы характеризуются записью мантиссы в форме знак/величина, а порядка в форме смещенного двоичного). В формате отсутствуют бесконечности, «не числа» и не нормализованные числа; имеется вариант для чисел с удвоенной точностью.
Хранение чисел в памяти. Разработчики микропроцессоров любят выражать свою индивидуальность, предусматривая хранение чисел в памяти в своеобразном порядке. Микропроцессоры 8086/8 (а, следовательно, и компьютеры IBM PC и совместимые с ними) записывают числа в память, начиная с самого младшего байта, который располагается в байте памяти с наименьшим номером; для семейства 68000 характерен обратный порядок. Вот счастье-то!
Преобразование данных в процессе ввода-вывода. Нам пришлось уже обсуждать форматы данных в контексте аппаратного интерфейса, который выдавал упакованные двоично-десятичные числа. Каков наиболее оптимальный способ работы с 8-разрядными данными, получаемыми из такого интерфейса? В зависимости от типа входных данных, числа значащих цифр, диапазона их изменения и проч. может оказаться удобным преобразовывать входные данные в числа с плавающей точкой (для получения максимального динамического диапазона), или в целые числа (для получения максимального разрешения), или выполнить какие-то другие числовые процедуры (например, вычисление отклонений от среднего значения или разностей последующих отсчетов). Все это можно делать в программном «драйвере» конкретного устройства, т. е. в программном модуле, который управляет вводом данных. Мы видим, таким образом, что оптимизация программного обеспечения не может быть выполнена без понимания особенностей аппаратуры и смысла принимаемых данных. Еще одна причина, по которой столь важно освоиться в этом чудесном мире электронной аппаратуры!
Таблицы
7
8
9
10
* * *
Примечания
1
Шум лопающихся при поджаривании, кукурузных зерен. — Прим. перев.
2
Многие читатели, имеющие дело с персональными компьютерами, наверняка слышали слово boot-сектор (сектор начальной загрузки). Для того чтобы дать понять читателю, какие образы возникали у отцов — основателей персональных компьютеров, отметим, что среди множества значений слова boot есть и такое как «ударить сапогом», а термин bootstrap фигурирует в выражении, которое переводится как «поднять самого себя за шнурки ботинок». — Прим. перев.
3
Точнее говоря, выполнить после дальнейшей обработки полученного объектного кода программой-редактором связей. Непосредственно исполнять объектный код компьютер не может. — Прим. перев.
4
Кроме арифметических флагов регистр флагов содержит еще три дополнительных флага для управления некоторыми действиями ЦП: флаг направления (DF), флаг разрешения прерываний (IF), флаг трассировки (ТF). — Прим. перев.
5
Для того чтобы этот пример работал, надо изменить идентификатор LOOP на какое-нибудь другое, не зарезервированное ассемблером выражение, например LOOP1. — Прим. перев.
6
Индексный. — Прим. перев.
7
Большинство компиляторов преобразуют исходный текст непосредственно в машинные команды (либо в строки вызова процедур, обрабатываемых компоновщиком) и необходимость в их дополнительном ассемблировании отпадает, хотя некоторые компиляторы, например транслятор языка Паскаль для машин типа ДВК, действуют именно так, как описано авторами. — Прим. перев.
8
А еще чаще — объектны. — Прим. перев.
9
Из мира больших машин пришло другое название этой программы — редактор связей; в среде пользователей микрокомпьютеров бытует жаргонное выражение «линкер». — Прим. перев.
10
В настоящее время эта «вторая половина» кодовой таблицы практически стандартизована и включает символы национальных алфавитов (в частности, русского), символы псевдографики и некоторые математические знаки. — Прим. перев.
11
Т.е. вычисленное как смещение относительно нижней границы знакового представления (-128, -32768). — Прим. перев.